﻿using System.Security.Cryptography;
using System.Text;

namespace Basic4Net.OAWeb.App_Data
{
    /// <summary>
    /// Common 的摘要说明

    /// </summary>
    public class Common
    {
        public Common()
        {

        }

        //    /// <summary>
        //    /// 学校名字
        //    /// </summary>
        //    public static string SchoolName
        //    {
        //        get
        //        {
        //            Perm p = System.Web.HttpContext.Current.Session["UserInfo"] == null ? new Perm() : (Perm)System.Web.HttpContext.Current.Session["UserInfo"];
        //            return p.SchoolName;
        //        }
        //    }
        //    /// <summary>
        //    /// 获取学区名
        //    /// </summary>
        //    public static string GetAreaName
        //    {
        //        get
        //        {
        //            Perm p = System.Web.HttpContext.Current.Session["UserInfo"] == null ? new Perm() : (Perm)System.Web.HttpContext.Current.Session["UserInfo"];
        //            return p.SchoolAreaName;
        //        }
        //    }

        //    /// <summary>
        //    /// 测试用获取学校编号

        //    /// </summary>
        //    /// <param name="num"></param>
        //    /// <returns></returns>
        //    public static string GetConstSchoolMark()
        //    {
        //        Perm perm = HttpContext.Current.Session["UserInfo"] as Perm;
        //        return perm.SchoolMark;
        //    }



        //    /// <summary>
        //    /// 获取权限对象
        //    /// </summary>
        //    /// <param name="num"></param>
        //    /// <returns></returns>
        //    public static Perm GetUserInfo()
        //    {
        //        Perm perm = HttpContext.Current.Session["UserInfo"] as Perm;
        //        return perm;
        //    }




        //    /// <summary>
        //    /// 获取初始密码
        //    /// </summary>
        //    /// <returns></returns>
        //    public static string GetStartPwd()
        //    {
        //        return "123456";
        //    }

        //    /// <summary>
        //    /// 转换学校性质
        //    /// </summary>
        //    /// <param name="num"></param>
        //    /// <returns></returns>
        //    public static string ConvertSchoolOptNum(int num)
        //    {
        //        if (num <= 0 || num > 6) return "";
        //        string[] OptStrArr = { "小学", "初中", "高中", "小学、初中", "初中、高中", "小学、初中、高中" };

        //        return OptStrArr[num - 1];
        //    }

        //    /// <summary>
        //    /// 转换年级
        //    /// </summary>
        //    /// <param name="num"></param>
        //    /// <returns></returns>
        //    public static string ConvertGradeNum(int num)
        //    {
        //        if (num <= 0 || num > 12) return "";
        //        string[] GradeStrArr = { "一年级", "二年级", "三年级", "四年级", "五年级", "六年级", "七年级", "八年级", "九年级", "高一", "高二", "高三" };

        //        return GradeStrArr[num - 1];
        //    }

        //    /// <summary>
        //    /// 根据学校性质获取年级列表
        //    /// </summary>
        //    /// <param name="OptNum"></param>
        //    /// <returns></returns>
        //    public static List<int> GetGradeList(int OptNum)
        //    {
        //        List<int> resultList = new List<int>();
        //        switch (OptNum)
        //        {
        //            case 1:
        //                resultList.Add(1);
        //                resultList.Add(2);
        //                resultList.Add(3);
        //                resultList.Add(4);
        //                resultList.Add(5);
        //                resultList.Add(6);
        //                break;
        //            case 2:
        //                resultList.Add(7);
        //                resultList.Add(8);
        //                resultList.Add(9);
        //                break;
        //            case 3:
        //                resultList.Add(10);
        //                resultList.Add(11);
        //                resultList.Add(12);
        //                break;
        //            case 4:
        //                resultList.Add(1);
        //                resultList.Add(2);
        //                resultList.Add(3);
        //                resultList.Add(4);
        //                resultList.Add(5);
        //                resultList.Add(6);
        //                resultList.Add(7);
        //                resultList.Add(8);
        //                resultList.Add(9);
        //                break;
        //            case 5:
        //                resultList.Add(7);
        //                resultList.Add(8);
        //                resultList.Add(9);
        //                resultList.Add(10);
        //                resultList.Add(11);
        //                resultList.Add(12);
        //                break;
        //            case 6:
        //                resultList.Add(1);
        //                resultList.Add(2);
        //                resultList.Add(3);
        //                resultList.Add(4);
        //                resultList.Add(5);
        //                resultList.Add(6);
        //                resultList.Add(7);
        //                resultList.Add(8);
        //                resultList.Add(9);
        //                resultList.Add(10);
        //                resultList.Add(11);
        //                resultList.Add(12);
        //                break;
        //            default:
        //                break;
        //        }
        //        return resultList;
        //    }

        //MD5加密
        //参数:待加密字符串
        //返回:加密后的字符串
        public static string UserMd5(string str)
        {
            string cl = str;
            string pwd = "";
            MD5 md5 = MD5.Create();//实例化一个md5对像
            // 加密后是一个字节类型的数组，这里要注意编码UTF8/Unicode等的选择　
            byte[] s = md5.ComputeHash(Encoding.Default.GetBytes(cl));
            // 通过使用循环，将字节类型的数组转换为字符串，此字符串是常规字符格式化所得

            for (int i = 0; i < s.Length; i++)
            {
                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母，如果使用大写（X）则格式后的字符是大写字符 

                pwd = pwd + s[i].ToString("X2");

            }
            return pwd;
        }

        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="sn"></param>
        /// <param name="pc"></param>
        /// <returns></returns>
        public static string Encrypt(string sn, string pc)
        {
            string s = "";
            string p = "";
            if (!string.IsNullOrEmpty(sn))
            {
                s = sn.Trim();
            }
            if (!string.IsNullOrEmpty(pc))
            {
                p = pc.Trim();
            }
            return UserMd5(s + p);
        }

        //    /// <summary>
        //    /// 取得网卡mac地址
        //    /// </summary>
        //    /// <returns></returns>
        //    public static String GetMacAddress()
        //    {
        //        ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
        //        ManagementObjectCollection moc = mc.GetInstances();
        //        string MacAddress = "";

        //        foreach (ManagementObject mo in moc)
        //        {
        //            if ((bool)mo["IPEnabled"] == true)
        //            {
        //                MacAddress += mo["MacAddress"].ToString();
        //            }
        //            mo.Dispose();
        //        }
        //        return MacAddress;
        //    }

        //    /// <summary>
        //    /// 填充GridView
        //    /// </summary>
        //    /// <param name="gv"></param>
        //    /// <param name="fillTableRow"></param>
        //    public static void FillGridView(GridView gv, int fillTableRow)
        //    {
        //        if (gv.Rows.Count != gv.PageSize)
        //        {
        //            if (gv.Controls.Count == 0)
        //            {
        //                gv.Controls.Add(new Table());

        //            }

        //            Control table = gv.Controls[0];

        //            if (table != null)
        //            {
        //                if (gv.Rows.Count == 0)
        //                {
        //                    GridViewRow head = new GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Normal);
        //                    //head.CssClass = "staffTitle";
        //                    for (int i = 0; i < gv.Columns.Count; i++)
        //                    {
        //                        TableCell cell = new TableCell();
        //                        cell.Text = gv.Columns[i].HeaderText;
        //                        cell.Style["width"] = gv.Columns[i].HeaderStyle.Width.ToString();
        //                        head.Controls.Add(cell);
        //                    }
        //                    table.Controls.Add(head);
        //                }
        //                for (int i = 0; i < fillTableRow - gv.Rows.Count; i++)
        //                {
        //                    int rowIndex = gv.Rows.Count + i + 1;
        //                    GridViewRow row = new GridViewRow(rowIndex, -1, DataControlRowType.Separator, DataControlRowState.Normal);
        //                    //row.CssClass = (rowIndex % 2 == 0) ? "alternate" : "item";
        //                    for (int j = 0; j < gv.Columns.Count; j++)
        //                    {
        //                        TableCell cell = new TableCell();
        //                        cell.Text = "&nbsp;";
        //                        row.Controls.Add(cell);
        //                    }
        //                    table.Controls.Add(row);
        //                }
        //            }
        //        }
        //    }

        //    /// <summary>
        //    /// 截断字符串

        //    /// </summary>
        //    /// <param name="resourceStr">源字符串</param>
        //    /// <param name="cutLength">截断长度</param>
        //    /// <param name="cutStr">替换结尾</param>
        //    /// <returns></returns>
        //    public static string CutOffString(string resourceStr, int cutLength, string cutStr)
        //    {
        //        //resourceStr = HttpContext.Current.Server.HtmlDecode(resourceStr);
        //        if (resourceStr.Length <= cutLength) return resourceStr;
        //        return resourceStr.Substring(0, cutLength) + cutStr;
        //    }


        //    /// <summary>
        //    /// 获取班级下拉列表
        //    /// </summary>
        //    /// <returns></returns>
        //    public static string GetClassOption()
        //    {
        //        string result = "";
        //        SchoolInfoLogic schoolInfoLogic = new SchoolInfoLogic();
        //        ClsInfoLogic clsInfoLogic = new ClsInfoLogic();

        //        Hashtable htSchool = new Hashtable();
        //        htSchool.Add("SchoolMark", Common.GetConstSchoolMark());
        //        List<SchoolInfo> list = (List<SchoolInfo>)schoolInfoLogic.FindAll(htSchool);
        //        if (list == null || list.Count == 0) return "";

        //        List<int> gradeList = Common.GetGradeList((int)list[0].SchoolOpt);
        //        foreach (int grade in gradeList)
        //        {
        //            string group = "<optgroup label=\"" + Common.ConvertGradeNum(grade) + "\">";

        //            Hashtable ht = new Hashtable();
        //            ht.Add("SchoolMark", Common.GetConstSchoolMark());
        //            ht.Add("Grade", grade);
        //            ht.Add("IsEffect", 1);
        //            List<ClsInfo> clsInfoList = (List<ClsInfo>)clsInfoLogic.FindAll(ht);
        //            if (clsInfoList == null) return "";
        //            //如果年级下没有班级，则不添加进列表中
        //            if (clsInfoList.Count == 0) continue;

        //            foreach (ClsInfo clsInfo in clsInfoList)
        //            {
        //                string option = "<option value=\"" + clsInfo.RID + "\">" + clsInfo.ClsName + "</option>";
        //                group += option;
        //            }

        //            group += "</optgroup>";

        //            result += group;
        //        }

        //        return result;
        //    }

        //    public static SchoolInfo CurrentSchool
        //    {
        //        get
        //        {
        //            Perm perm = (Perm)HttpContext.Current.Session["UserInfo"];
        //            SchoolInfoLogic schoolInfoLogic = new SchoolInfoLogic();
        //            SchoolInfo schInfo = schoolInfoLogic.FindBySchoolMark(perm.SchoolMark);
        //            return schInfo;
        //        }
        //    }

        //    /// <summary>
        //    /// 学年
        //    /// </summary>
        //    public static int SchoolYear
        //    {
        //        get { return (int)CurrentSchool.SchoolYear; }
        //    }

        //    /// <summary>
        //    /// 学年
        //    /// </summary>
        //    public static int SchoolTerm
        //    {
        //        get { return (int)CurrentSchool.SchoolTerm; }
        //    }

        //    //public static GlobalTermInfo GloblTermInfo
        //    //{
        //    //    get
        //    //    {
        //    //        IGlobalTermInfoLogic globalTermInfoLogic = Container<IGlobalTermInfoLogic>.Instance;

        //    //        List<GlobalTermInfo> globalTermInfoList = (List<GlobalTermInfo>) globalTermInfoLogic.FindAll();
        //    //        return globalTermInfoList.Count == 0 ? null : globalTermInfoList[0];
        //    //    }
        //    //}

        //    public static string SchoolOpt
        //    {
        //        get
        //        {
        //            return ConvertSchoolOptNum((int)CurrentSchool.SchoolOpt);
        //        }
        //    }


        //    public static readonly EduVersion CurrentVersion = EduVersion.School;

        //    /// <summary>
        //    /// 获取学校的校训
        //    /// </summary>
        //    /// <returns></returns>
        //    public static EduVersion GetLoginType()
        //    {
        //        string strLoginType = "Edu";
        //        try
        //        {
        //            Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        //            AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
        //            strLoginType = appSettings.Settings["LoginType"].Value;
        //        }
        //        catch
        //        {
        //            strLoginType = "Edu";
        //        }

        //        if (strLoginType == "Edu")
        //            return EduVersion.Education;

        //        if (strLoginType == "Sch")
        //            return EduVersion.School;

        //        return EduVersion.Education;
        //    }

        //    /// <summary>
        //    /// 转换学年和学期
        //    /// </summary>
        //    /// <param name="num"></schoolyear>
        //    /// <returns></returns>
        //    public static string ConvertYear(int schoolyear)
        //    {
        //        string str = string.Format("{0}-{1}学年", schoolyear, schoolyear + 1);
        //        return str;
        //    }

        //    /// <summary>
        //    /// 转换学期
        //    /// </summary>
        //    /// <param name="num"></param>
        //    /// <returns></returns>
        //    public static string ConvertTerm(int term)
        //    {
        //        if (term < 1 || term > 2) return "";
        //        string[] TermStrArr = { "上学期", "下学期" };

        //        return TermStrArr[term - 1];
        //    }

        //    /// <summary>
        //    /// 转换学年和学期
        //    /// </summary>
        //    /// <param name="num"></param>
        //    /// <returns></returns>
        //    public static string ConvertYearAndTerm(int schoolyear, int term)
        //    {
        //        string str = string.Format("{0}{1}", ConvertYear(schoolyear), ConvertTerm(term));
        //        return str;
        //    }

        //    /// <summary>
        //    /// 获取WebService的URL
        //    /// </summary>
        //    /// <returns></returns>
        //    public static string GetWSUrl()
        //    {
        //        string strWSUrl = "";
        //        try
        //        {
        //            Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        //            AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
        //            strWSUrl = appSettings.Settings["WebServiceUrl"].Value;
        //        }
        //        catch
        //        {
        //            strWSUrl = "";
        //        }

        //        return strWSUrl;
        //    }

        //    /// <summary>
        //    /// 将学生评教师产生的记录ID传给Session["TeachIDandRecordID"]
        //    /// </summary>
        //    /// <returns></returns>
        //    public static void GetRecordID(int teachID, int recordID)
        //    {
        //        Hashtable ht = new Hashtable();
        //        ht = (Hashtable)HttpContext.Current.Session["TeachIDandRecordID"];
        //        string[] teachIDs = ht["teachIDs"].ToString().Split(',');
        //        string[] recordIDs = ht["recordIDs"].ToString().Split(',');
        //        for (int i = 0; i < teachIDs.Length; i++)
        //        {
        //            if (Int32.Parse(teachIDs[i]) == teachID)
        //            {
        //                recordIDs[i] = recordID.ToString();
        //                break;
        //            }
        //        }
        //        string strTeachIDs = String.Empty;
        //        string strRecordIDs = String.Empty;
        //        ht.Clear();
        //        for (int i = 0; i < teachIDs.Length; i++)
        //        {
        //            strTeachIDs += "," + teachIDs[i];
        //            strRecordIDs += "," + recordIDs[i];
        //        }
        //        strTeachIDs = strTeachIDs.Substring(1);
        //        strRecordIDs = strRecordIDs.Substring(1);
        //        ht.Add("teachIDs", strTeachIDs);
        //        ht.Add("recordIDs", strRecordIDs);

        //        HttpContext.Current.Session["TeachIDandRecordID"] = ht;
        //    }
        //    /// <summary>
        //    /// 校园版登陆页面
        //    /// </summary>
        //    private const string SchoolUrl = "SchLogin.aspx";

        //    /// <summary>
        //    /// 教育局版登陆页面
        //    /// </summary>
        //    private const string EducationUrl = "EduLogin.aspx";

        //    public static void CheckLogin()
        //    {
        //        string url = HttpContext.Current.Request.Url.ToString();
        //        string pageUrl = url.Split(new char[] { '/', '\\' })[url.Split(new char[] { '/', '\\' }).Length - 1];

        //        switch (Common.GetLoginType())
        //        {
        //            case EduVersion.School:
        //                if (pageUrl.ToLower() != SchoolUrl.ToLower())
        //                    HttpContext.Current.Response.Redirect(SchoolUrl);
        //                break;
        //            case EduVersion.Education:
        //                if (pageUrl.ToLower() != EducationUrl.ToLower())
        //                    HttpContext.Current.Response.Redirect(EducationUrl);
        //                break;
        //        }
        //    }

        //    /// <summary>
        //    /// 验证学生登录方式
        //    /// </summary>
        //    /// <returns></returns>
        //    public static StuLoginType GeStuLogin()
        //    {
        //        string strLoginType = "RealName";
        //        try
        //        {
        //            Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        //            AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
        //            strLoginType = appSettings.Settings["StuLogin"].Value;
        //        }
        //        catch
        //        {
        //            strLoginType = "RealName";
        //        }

        //        if (strLoginType == "RealName")
        //            return StuLoginType.RealName;

        //        if (strLoginType == "Incognito")
        //            return StuLoginType.Incognito;

        //        return StuLoginType.RealName;
        //    }

        //    /// <summary>
        //    /// 获取教师可以同时存在于几个部门 
        //    /// 0表示不限制
        //    /// </summary>
        //    /// <returns></returns>
        //    public static int GetTeacherToHowManyDepartment()
        //    {
        //        int num = 0;
        //        try
        //        {
        //            Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        //            AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
        //            num = Convert.ToInt32(appSettings.Settings["TeachDepType"].Value);
        //        }
        //        catch
        //        {
        //            num = 0;
        //        }
        //        return num;
        //    }
        //    /// <summary>
        //    /// 是否包含学分模块配置
        //    /// 1：可用 0：不可用 
        //    /// </summary>
        //    /// <returns></returns>
        //    public static bool GetIsHaveTCES()
        //    {
        //        bool num = false;
        //        try
        //        {
        //            Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        //            AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
        //            if (Convert.ToInt32(appSettings.Settings["HaveTCES"].Value) == 1)
        //            {
        //                num = true;
        //            }

        //        }
        //        catch
        //        {
        //            num = false;
        //        }
        //        return num;
        //    }
        //    /// <summary>
        //    /// 是否包含数据字典配置
        //    /// 1：可用 0：不可用 
        //    /// </summary>
        //    /// <returns></returns>
        //    public static bool GetIsHavaDataDictionary()
        //    {
        //        bool num = false;
        //        try
        //        {
        //            Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        //            AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
        //            if (Convert.ToInt32(appSettings.Settings["HavaDataDictionary"].Value) == 1)
        //            {
        //                num = true;
        //            }
        //        }
        //        catch
        //        {
        //            num = false;
        //        }
        //        return num;
        //    }
        //    /// <summary>
        //    /// 转换模块类型
        //    /// </summary>
        //    /// <param name="num"></param>
        //    /// <returns></returns>
        //    public static string ConvertModTypeNum(int num)
        //    {
        //        if (num <= 0 || num > 5) return "";
        //        string[] TypeStrArr = { "必修", "选修Ⅰ-A", "选修Ⅰ-B", "选修Ⅰ-C", "选修Ⅱ" };

        //        return TypeStrArr[num - 1];
        //    }

        //    /// <summary>
        //    /// 转换科目类型
        //    /// </summary>
        //    /// <param name="num"></param>
        //    /// <returns></returns>
        //    public static string ConvertSubjectTypeNum(int num)
        //    {
        //        if (num < 0 || num > 2) return "";
        //        string[] TypeStrArr = { "不分科", "文科", "理科" };

        //        return TypeStrArr[num];
        //    }

        //    /// <summary>
        //    /// 获取教工身份描述
        //    /// </summary>
        //    /// <returns></returns>
        //    public static string GetTeacherStation(int station)
        //    {
        //        string rst = "";

        //        switch (station)
        //        {
        //            case 1:
        //                rst = "教师";
        //                break;
        //            case 2:
        //                rst = "学校领导";
        //                break;
        //            case 3:
        //                rst = "学分认定组";
        //                break;
        //            default:
        //                rst = "";
        //                break;
        //        }

        //        return rst;
        //    }
    }

    ///// <summary>
    ///// 版本
    ///// </summary>
    //public enum EduVersion
    //{
    //    /// <summary>
    //    /// 校园版
    //    /// </summary>
    //    School = 0,

    //    /// <summary>
    //    /// 教育局版
    //    /// </summary>
    //    Education = 1
    //}

    ///// <summary>
    ///// 学生登录方式
    ///// </summary>
    //public enum StuLoginType
    //{
    //    /// <summary>
    //    /// 匿名
    //    /// </summary>
    //    Incognito = 0,

    //    /// <summary>
    //    /// 实名
    //    /// </summary>
    //    RealName = 1
    //}
}